package Clases;
import java.io.BufferedReader;
import java.io.*;
/*LABORATORIO I. ENTREGA I
  Integrantes:ROBERT ALVARADO C.I.:18.052.474
              MARYELIS MENDEZ C.I.:19.887.067         
	          MAYILDE RIVERO C.I.:18.430.469      
	          ALFA PERNALETE C.I.:19.164.564   
 */

public class Main {

	private static BufferedReader lector;
	/**
	 * @param args
	 * @throws IOException 
	 */	
	static void mostrarEstudiante(Estudiante e)
	{
		System.out.println("¦----------------------------");
		System.out.println("¦Cedula:"+e.getCedula());		
		System.out.println("¦Nombre:"+e.getNombre());		
		System.out.println("¦Apellido:"+e.getApellido());
		System.out.println("¦----------------------------");
	}
	static int menu()
	{
		BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("¦----------------------------------------------------------¦");
		System.out.println("¦                 *****Menu de opciones*****               ¦");
	    System.out.println("¦\t1  - Asignar un profesor			   ¦");
	    System.out.println("¦\t2  - Inscribir Estudiante                          ¦");
	    System.out.println("¦\t3  - Retirar Estudiante                            ¦");
	    System.out.println("¦\t4  - Buscar Estudiante                             ¦");
	    System.out.println("¦\t5  - Aplicar Evaluaciones                          ¦");
	    System.out.println("¦\t6  - Listado de estudiantes ordenados por Cedula   ¦");
	    System.out.println("¦\t7  - Listado de estudiantes ordenados por Nota     ¦");
	    System.out.println("¦\t8  - Listado de estudiantes aprobados              ¦");
	    System.out.println("¦\t9  - Listado de estudiantes aplazados              ¦");
	    System.out.println("¦\t10 - Promedio de notas                             ¦");
	    System.out.println("¦\t11 - Salir                                         ¦");
	    System.out.println("¦----------------------------------------------------------¦");
	    System.out.print("Seleccione una opcion: ");
	    
		try
		{
			return Integer.parseInt(lector.readLine());
		}catch (Exception e)
		{
			return 0;
		}
		
	}
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		boolean hayprofesor=false;
		
		Seccion seccion=new Seccion();
		   Estudiante estudiante = new Estudiante();
	       int opcion;
	       lector = new BufferedReader(new InputStreamReader(System.in));
	       String Cedula,Nombre,Apellido,TituloAcademico;
		   String respuesta = "S";
		   
	       do{    
		   opcion = menu();
		   int i=0;
	       switch(opcion)
		       		{
		       			case 1:
		       				if(! hayprofesor)
		       				{
		       				System.out.println("¦----------------------------------------------------------¦");
		       				System.out.println("              ***REGISTRAR PROFESOR***                      ");
		       			        System.out.print("\tCedula: ");
								Cedula=lector.readLine();
								System.out.print("\tNombre: ");
								Nombre=lector.readLine();
								System.out.print("\tApellido: ");
								Apellido=lector.readLine();
								System.out.print("\tTitulo Academico: ");
								TituloAcademico=lector.readLine();
								Profesor prof= new Profesor(Cedula,Nombre,Apellido,TituloAcademico);
								seccion.setProfesor(prof);
								System.out.println("\tEl profesor " +Nombre+"  "+Apellido+"  ha sido registrado ");
				                System.out.println("¦----------------------------------------------------------¦");
				                hayprofesor=true;
		       				}
		       				else{
		       					System.out.println("***ATENCION***");
		       					System.out.println("La seccion ya tiene un profesor asignado");
		       				}
		       			break;
		       			
		       			case 2:System.out.println("¦----------------------------------------------------------¦"); 
		       			if (hayprofesor){       
		       			       System.out.println("                ***REGISTRAR ALUMNO***");		       		    
				       			respuesta="S";
				       			while (respuesta.equalsIgnoreCase("S"))
				       	{
				       			System.out.print("\tCedula: ");
								Cedula=lector.readLine();
								System.out.print("\tNombre: ");
								Nombre=lector.readLine();
								System.out.print("\tApellido: ");
								Apellido=lector.readLine();
     					       Estudiante esAux = new Estudiante();
     					       esAux.setCedula(Cedula);
     					       esAux.setNombre(Nombre);
     					       esAux.setApellido(Apellido);
     					       
								
								seccion.IncluirEstudiante(esAux);
								System.out.println("¿Desea agregar otro Estudiante (S/N) ?");
								respuesta=lector.readLine();
								System.out.println("¦----------------------------------------------------------¦");
				       	}
		       			}
				       			else{
				       			System.out.println("**ATENCION**");
				       			System.out.println("Debe registrar antes un profesor");
								System.out.println("¦----------------------------------------------------------¦");
		       			}
		       		
								break;
		       			
		       			case 3:System.out.println("¦----------------------------------------------------------¦");
		       					System.out.println("               ***RETIRAR ESTUDIANTE***");
				       			respuesta="S";
				       			while (respuesta.equalsIgnoreCase("S"))
				       	{
				       			System.out.print("\tIndique la cedula del Estudiante que desea retirar: ");
								Cedula=lector.readLine();
								Estudiante e = seccion.BuscarEstudiante(Cedula);
			                    if (e.getCedula().equals("")){
			                    System.out.println("**ATENCION**");
			                    System.out.println("El estudiante no esta inscrito en la seccion");
			                    System.out.println("¿Desea retirar otro Estudiante (S/N) ?");
								respuesta=lector.readLine();
			                    }
			                    else{
			                    	mostrarEstudiante(e);	
			                    seccion.RetirarEstudiante(e);
			                    System.out.println("\tEl Estudiante " +e.getNombre()+"  "+e.getApellido()+" fue retirado de la seccion ");         
			                    System.out.println("¿Desea retirar otro Estudiante (S/N) ?");
								respuesta=lector.readLine();
			             
			                    }        
			    System.out.println("¦----------------------------------------------------------¦");
		       			
				       	}
	                    break;
		       			
		       			case 4:System.out.println("¦----------------------------------------------------------¦");
		       			      System.out.println("                 ***BUSQUEDA DE ESTUDIANTE***");
		       			      respuesta="S";
			       			  while (respuesta.equalsIgnoreCase("S")){ 
		       			      System.out.print("\tIndique la cedula del Estudiante que desea Buscar: ");
						       Cedula=lector.readLine();
						       Estudiante esAux = new Estudiante();
						       esAux=seccion.BuscarEstudiante(Cedula);
						       if (esAux.getCedula().equals("")){
						    	   System.out.println("**ATECION**");
						    	   System.out.println("El estudiante fue retirado o no fue inscrito en la seccion");
						    	   System.out.println("¿Desea buscar otro Estudiante (S/N) ?");
									respuesta=lector.readLine();
						       }
						    	   else
						    
						       {						       
						    	   mostrarEstudiante(esAux);
						    	   System.out.println("¿Desea buscar otro Estudiante (S/N) ?");
								   respuesta=lector.readLine();
						       }
			       			  }
		       	        break;
		       	        
		       			case 5:
		       					if (hayprofesor)
		       					{
		       				      
		       					  System.out.println("¦----------------------------------------------------------¦");
		       				      seccion.AplicarEvaluacion();
		       				    
		       					}
		       					else{
		       				     System.out.println("**ATENCION**");
		       					 System.out.println("No se ha asignado el profesor. No se pueden aplicar las evaluaciones");
		       					}
		       			break;
		       			
		       			case 6:System.out.println("¦----------------------------------------------------------¦");
		       			       System.out.println("      ***ESTUDIANTES ORDENADOS POR CEDULA***");
		       			       seccion.ListaEstuCedula();	
		       			       FileWriter fichero = new FileWriter("ListadoOrdenadoPorCedula.txt");
			       		       PrintWriter pw = new PrintWriter(fichero);
			       		       for(i=0;i<seccion.arrEst.size();i++){
			       		    	pw.println("Cedula:  "+seccion.arrEst.get(i).getCedula()+"  Nombre:  "+seccion.arrEst.get(i).getNombre()+ "  Apellido:  "+seccion.arrEst.get(i).getApellido());
		       			       		       		
			       		      }
			       		      pw.close();
		       			break;
		       			       
		       			case 7:System.out.println("¦----------------------------------------------------------¦");
		       				   System.out.println("      ***ESTUDIANTES ORDENADOS POR NOTA FINAL***");       
		       			       seccion.ListaEstuNota();
		       			       FileWriter fichero1 = new FileWriter("ListadoOrdenadoPorNota.txt");
			       		       PrintWriter pw1= new PrintWriter(fichero1);
			       		       for(i=0;i<seccion.arrEst.size();i++){
			       		       pw1.println("Nombre:  "+seccion.arrEst.get(i).getNombre()+ "  Apellido:  "+seccion.arrEst.get(i).getApellido()+ "  Nota 1:  "+seccion.arrEst.get(i).getNota1() +"  Nota 2:  "+seccion.arrEst.get(i).getNota2() +"  Nota 3:  "+seccion.arrEst.get(i).getNota3() +"  Nota Final:  "+seccion.arrEst.get(i).getNotafinal());
		       			       
			       		       }
				       		   pw1.close();
		       			       
		       			break;
		       			       
		       			case 8:System.out.println("¦----------------------------------------------------------¦");
		       			       System.out.println("        ***ESTUDIANTES APROBADOS***"); 
		       			       seccion.ListaEstuAprobado();
		       			       FileWriter fichero2 = new FileWriter("ListadoDeEstudiantesAprobados.txt");
			       		       PrintWriter pw2 = new PrintWriter(fichero2);
			       		       
			       		       
			       		       for(i=0;i<seccion.arrEst.size();i++){
			       			       if(seccion.arrEst.elementAt(i).getNotafinal()>=10){
				       			       pw2.println("Nombre:  "+seccion.arrEst.get(i).getNombre()+ "  Apellido:  "+seccion.arrEst.get(i).getApellido()+"  Estatus:  APROBADO");
			       		    
			       		       }
			       		       }
					       		       //pw2.println("No hay estudiantes aprobados");		       		
			       		       
			       		       
			       		      pw2.close();
		       			break;
		       			
		       			case 9:System.out.println("¦----------------------------------------------------------¦");
		       			       System.out.println("        ***ESTUDIANTES APLAZADOS***");
		       				   seccion.ListaEstuAplazado();
		       				FileWriter fichero3 = new FileWriter("ListadoDeEstudiantesAplazados.txt");
			       		       PrintWriter pw3 = new PrintWriter(fichero3);
			       		       
			       		    
			       		    
			       		     for(i=0;i<seccion.arrEst.size();i++){
			       		    	if(seccion.arrEst.elementAt(i).getNotafinal()<10){
		       			       pw3.println("Nombre:  "+seccion.arrEst.get(i).getNombre()+ "  Apellido:  "+seccion.arrEst.get(i).getApellido()+"  Estatus:  APLAZADO");
			       		    
			       		    }
			       		    
			       		     }
			       		    //pw3.println("No hay estudiantes aplazados");
			       		    
			       		     
			       		    pw3.close();
		       			break;
		       			
		       			case 10:System.out.println("¦----------------------------------------------------------¦");
		       			        System.out.println("        ***PROMEDIO DE NOTAS DE LA SECCION***");
		       			        seccion.PromedioNotas();
		       			break;
		       		}
	       
			}while (opcion !=11);

		   
		   }
	}

